<!DOCTYPE html>
<html lang="en-us">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

  	<meta property="og:title" content=" 测试计划和测试用例以及测试方法(测试策略) &middot;  我的博客" />
  	<meta property="og:site_name" content="我的博客" />
  	<meta property="og:url" content="/my_technology/02/" />
    
    
  	<meta property="og:type" content="article" />

    <meta property="og:article:published_time" content="2020-05-29T21:27:19&#43;08:00" />

    
    

  <title>
     测试计划和测试用例以及测试方法(测试策略) &middot;  我的博客
  </title>

    <meta name="description" content="这里是付佳康的个人博客" />

    <meta name="HandheldFriendly" content="True" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <link rel="shortcut icon" href="/my_technology/images/favicon.ico">
	  <link rel="apple-touch-icon" href="/my_technology/images/apple-touch-icon.png" />
    
    <link rel="stylesheet" type="text/css" href="/my_technology/css/screen.css" />
    <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Merriweather:300,700,700italic,300italic|Open+Sans:700,400|Inconsolata" />


    
      
          <link href="/my_technology/index.xml" rel="alternate" type="application/rss+xml" title="我的博客" />
      
      
    
    <meta name="generator" content="Hugo 0.68.3" />

    <link rel="canonical" href="/my_technology/02/" />

     
</head>
<body class="nav-closed">
<div id="particles-js"></div>
  


 <div class="site-wrapper">



<header class="main-header " style="background-image: url(/my_technology/images/user.jpg)">

    <nav class="main-nav overlay clearfix">
        
            <a class="blog-logo" href="/my_technology/"><img src="/my_technology/images/user.png" alt="Blog Logo" /></a>
        
        
    </nav>
<div class="vertical">
        <div class="main-header-content inner">
            <h1 class="page-title">
              <a class="btn-bootstrap-2" href="#content">我的博客</a>
          </h1>
          <h2 class="page-description">这里是付佳康的个人博客</h2>
        </div>
</div>
    <a class="scroll-down icon-arrow-left" href="#content"><span class="hidden">Scroll Down</span></a>
</header>

  <main id="content" class="content" role="main">


  <article class="post ">

    <header class="post-header">
        <h1 class="post-title">测试计划和测试用例以及测试方法(测试策略)</h1>
        <section class="post-meta">
        
         
        </section>
    </header>

    <section class="post-content">
      <p><img src="../1.png" alt="测试用例">
<img src="../2.png" alt="测试用例">
<img src="../3.png" alt="测试用例"></p>
<pre><code>测试用例定义:
	执行测试的依据，将测试的操作步骤进行以文档的方式记录下来
	
测试用例的格式  :
    测试用例的模块: 操作软件的一个大的菜单   命名以模块名称为主
    测试用例的编号: 命名以菜单下具体功能——数字   
    测试输入: 对具体的功能操作步骤   
    执行条件: 操作的先决条件
    预期结果: 是以需求文档上的内容为准
    实际结果: 依据测试数据的内容输出后得到的结果可能与预期一直或是不一致
  
测试用例的文档方式2种:
    exl 表格的方式
    word文档方式

测试用例的特性:
    代表性：能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
    针对性：对程序中的可能存在的错误有针对性地测试
    可判定性：测试执行结果的正确性是可判定的，每一个测试用例都应有相应的期望结果
    可重现性：对同样的测试用例，系统的执行结果应当是相同的。


软件的分类:
    OA: 办公自动化  
    crm: 客户管理系统
    电商项目
    ERP: 进销存系统
</code></pre><pre><code>测试方法/测试策略:
    1.等价类划分:
        概念：有效，无效
            1.等价类划分是指分步骤地把海量（无限）的测试用例集减得很小，但过程同样有效。
            2.等价类 ：
                何为等价类，某个输入域的集合，在这个集合中每个输入条件都是等效的。
                一般可分为有效等价类和无效等价类
                
                等价类划分为：
                    有效等价类：指符合《需求规格说明书》，输入合理的数据集合
                    无效等价类：指不符合《需求规格说明书》，输入不合理的数据集合
            
	2.边界值：
	    概念：
	        即使最简单的程序要处理的数据量也可能极大，使这些数据得以测试的技巧是，
	        根据一些关键的原则进行等价类的划分，以合理减少测试用例，
	        这些关键的原则是：边界条件，次边界条件、空值和无效数据。
	        
	    确定边界值的方法：
            1.确定边界情况（输入或输出等价类的边界）
            2.选取正好等于、刚刚大于或刚刚小于边界值作为测试数据
            
            边界值不是从每个等价类中挑一个作为代表，而是把每个等价类的边界都进行测试。
	
	3.因果图法
	    概念：
	        因果图法比较适合输入条件比较多的情况，测试所有的输入条件的排列组合。
	        所谓的原因就是输入，所谓的结果就是输出。
	        
        因果图基本图形符号：
            恒等：若原因出现，则结果出现；若原因不出现，则结果不出现。
            非（～）：若原因出现，则结果不出现；若原因不出现，则结果出现。
            或（∨）：若几个原因中有一个出现，则结果出现；若几个原因都不出现，则结果不出现。
            与（∧）：若几个原因都出现，结果才出现；若其中有一个原因不出现，则结果不出现。

        因果图的约束符号:
            E（互斥）：表示两个原因不会同时成立，两个中最多有一个可能成立
            I（包含）：表示三个原因中至少有一个必须成立
            O（惟一）：表示两个原因中必须有一个，且仅有一个成立
            R（要求）：表示两个原因，a出现时，b也必须出现，a出现时，b不可能不出现
            M（屏蔽）：两个结果，a为1时，b必须是0，当a为0时，b值不定
</code></pre><p><img src="../%E5%9B%A0%E6%9E%9C%E5%9B%BE%E7%AC%A6%E5%8F%B7.png" alt="因果图基本图形符号">
<img src="../%E5%9B%A0%E6%9E%9C%E7%BA%A6%E6%9D%9F.png" alt="因果图约束符号"></p>
<pre><code>	4.正交法：
	    1.正交实验法就是利用排列整齐的表 -正交表来对试验进行整体设计、综合比较、统计分析，实现通过少数的实验次数找到较好的生产条件，
	    以达到最高生产工艺效果，这种试验设计法是从大量的试验点中挑选适量的具有代表性的点，利用已经造好的表格—正交表来安排试验并进行数据分析的方法。
	    
	    2.正交表能够在因素变化范围内均衡抽样，使每次试验都具有较强的代表性，由于正交表具备均衡分散的特点，保证了全面实验的某些要求，这些试验往往能够较好或更好的达到实验的目的。
	    
	    3.正交实验设计包括两部分内容：
	        第一，是怎样安排实验；
	        第二，是怎样分析实验结果。
	        
        正交表测试用例设计方法的特点是什么？
            1、用最少的实验覆盖最多的操作，测试用例设计很少，效率高，但是很复杂；
            2、对于基本的验证功能，以及二次集成引起的缺陷，一般都能找出来；但是更深的缺陷，更复杂的缺陷，还是无能为力的；
            3、体的环境下，正交表一般都很难做的。大多数，只在系统测试的时候使用此方法。
	        
        应用场景：
            在一个界面中有多个控件，每个控件有多个取值，控件之间可以相互组合，不可能（也没有必要）为每一种组合编写一条用例，如何使用最少最优的组合进行测试。——正交排列法
	    
            判定表，因果图也是考虑控件组合，但是组合数量较少（一般不会超过20中）
            公式：Ln(mk)
            k是表的列数，表示控件的个数（因数个数）
            m是每个控件的取值个数（因数水平）
            n是表的行数，也就是需要测试组合的次数
            正交表查询地址：https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
            正交排列法：http://support.sas.com/techsup/technote/ts723_Designs.txt
	
	5.场景法：
	    测试用例设计的思想：
	        用事件触发来控制流程的，事件触发时的情景便形成了场景，而同一事件不同的触发顺序和处理结果就形成事件流。
	        可以比较生动地描绘出事件触发时的情景，有利于测试设计者设计测试用例，同时使测试用例更容易理解和执行。
	        用例场景是通过描述流经用例的路径来确定的过程，
            这个流经过程要从用例开始到结束遍历其中所有基本流和备选流。
</code></pre><p><img src="../%E5%9C%BA%E6%99%AF%E6%B3%95.png" alt="场景法"></p>
<pre><code>	6.错误推断法：
	    错误猜测法是测试经验丰富的人喜欢使用的一种测试用例设计方法。
        一般这种方法是基于经验和直觉推测程序中可能发送的各种错误，有针对性地设计。只能作为一种补充。
	        技巧：
	            最重要的是要思考和分析测试对象的各个方面，多参考以前发现的bug的相关数据，总结的经验，个人多考虑异常的情况、
	            反面的情况、特殊的输入，以一个攻击者的态度对待程序，就能设计出比较完善的测试用例来。
	    
	测试用例的输入类型：  
	    字母  
	    数字  
	    特殊符号 
	    空字符  
	    汉字

    编写任意测试用例的时候3步骤走：
        1.根据需求提取测试用例的测试点
        2.根据测试点内容输入不同数据类型
        3.得到不用结果用来编写测试用例
	
测试用例评审和变更步骤与评审面试题:
    测试评审的标准：
		1.测试用例的正确性测试用例不含有争议（测试用例本身的描述是否清晰，是否存在二义性）
		2.测试用例是否冗余（是否考虑到测试用例的执行效率.往往测试用例中步骤不断重复执行，验证点却不同，而且测试设计的冗余性，都造成了效率的低下）
		3.测试用例的覆盖率（是否针对需求跟踪矩阵，覆盖了所有的软件需求）
		4.测试用例是否满足需求文档（是否完全遵守了软件需求的规定。这并不一定的，因为即使再严格的评审，也会出现错误，应具体情况具体对待）
		
    1、需要评审的原因：
        测试用例是软件测试的准则，但它并不是一经编制完成就成为准则。
        由于用例开发人员的设计经验和对需求理解的深度各不相同，所以用例的质量难免会有不同程度的差异。
		
    2、进行评审的时机：
        两个时间点：
            第一，是在用例的初步设计完成之后进行评审。
            第二，是在整个详细用例全部完成之后进行二次评审。如果项目时间比较紧张，尽可能保证对用例设计进行评审，提前发现其中的不足之处。
		
    3、参与评审人员：
        这里会分为多个级别进行评审。 
        1.部门评审，测试部门全体成员参与的评审。 
        2.公司评审，这里包括了项目经理、需求分析人员、架构设计人员、开发人员和测试人员。 
        3.客户评审，包括了客户方的开发人员和测试人员。这种情况在外包公司比较常见。 
		
    4、评审内容 :
        评审的内容有以下几个方面 
        1)用例设计的结构安排是否清晰、合理，是否利于高效对需求进行覆盖。 
        2)优先极安排是否合理。 
        3)是否覆盖测试需求上的所有功能点。 
        4)用例是否具有很好可执行性。例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确期待结果是否有明显的验证方法。
        5)是否已经删除了冗余的用例。 
        6)是否包含充分的负面测试用例。充分的定义，如果在这里使用2&amp;8法则，那就是4倍于正面用例的数量，毕竟一个健壮的软件，其中80%的代码都是在&quot;保护&quot;20%的功能实现。 
        7)是否从用户层面来设计用户使用场景和使用流程的测试用例。 
        8)是否简洁，复用性强。例如，可将重复度高的步骤或过程抽取出来定义为一些可复用标准步骤
        
        附加：一个&quot;健康&quot;的测试用例至少要通过前5个标准	
        
    5、评审的方式:
        1.召开评审会议。与会者在设计人员讲解之后给出意见和建议，同时进行详细的评审记录。 
        2.通用邮件与相关人员沟通。
        3.通用IM工具直接与相关人员交流 。
            （方式只是手段，得到其它人员对于用例的反馈信息才是目的。 
            无论采用那种方式，都应该在沟通之前把用例设计的相关文档发送给对方进行前期的学习和了解，以节省沟通成本。 ）

    6、评审结束标准
        在评审活动中会收集到用例的反馈信息，在此基础上进行用例更新，直到通过评审。
</code></pre><p><img src="../%E8%AF%84%E5%AE%A1%E6%A3%80%E6%9F%A5%E9%A1%B91.png" alt="评审检查项">
<img src="../%E8%AF%84%E5%AE%A1%E6%A3%80%E6%9F%A5%E9%A1%B92.png" alt="评审检查项"></p>

    </section>


  <footer class="post-footer">


    
    <figure class="author-image">

        <a class="img" href="/my_technology/" style="background-image: url(/my_technology/images/user.png)"><span class="hidden">付佳康</span></a>
    </figure>
    

    <section class="author">

  <p>付佳康</p>
  

</section>


    
    <section class="share">
      <h4>Share this page</h4>
      <a class="icon-twitter" style="font-size: 1.4em" href="https://twitter.com/share?text=%e6%b5%8b%e8%af%95%e8%ae%a1%e5%88%92%e5%92%8c%e6%b5%8b%e8%af%95%e7%94%a8%e4%be%8b%e4%bb%a5%e5%8f%8a%e6%b5%8b%e8%af%95%e6%96%b9%e6%b3%95%28%e6%b5%8b%e8%af%95%e7%ad%96%e7%95%a5%29&amp;url=%2fmy_technology%2f02%2f"
          onclick="window.open(this.href, 'twitter-share', 'width=550,height=235');return false;">
          <span class="hidden">Twitter</span>
      </a>
      <a class="icon-facebook" style="font-size: 1.4em" href="https://www.facebook.com/sharer/sharer.php?u=%2fmy_technology%2f02%2f"
          onclick="window.open(this.href, 'facebook-share','width=580,height=296');return false;">
          <span class="hidden">Facebook</span>
      </a>
      <a class="icon-google-plus" style="font-size: 1.4em" href="https://plus.google.com/share?url=%2fmy_technology%2f02%2f"
         onclick="window.open(this.href, 'google-plus-share', 'width=490,height=530');return false;">
          <span class="hidden">Google+</span>
      </a>
    </section>
    

    
    
    

  </footer>
</article>

</main>
    <footer class="site-footer clearfix">
        <section class="copyright"><a href="">我的博客</a> </section>
        
        <section class="poweredby">Proudly generated by <a class="icon-hugo" href="https://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/syui/hugo-theme-air">hugo-theme-air</a> theme</section>
        
    </footer>
    </div>
    <script type="text/javascript" src="/my_technology/js/jquery.js"></script>
    <script type="text/javascript" src="/my_technology/js/jquery.fitvids.js"></script>
    <script type="text/javascript" src="/my_technology/js/index.js"></script>
    <script src="/my_technology/js/particles.min.js"></script>
    <script src="/my_technology/js/particles.js"></script>  

</body>
</html>

